
// 封装三个函数  date = new Date(); => 对象 => 引用类型
// 1. 在不影响原日期对象的前提下,封装一个函数,传入一个日期对象 => 返回该月的第一天星期几(0->7)
function getFirstDayWeek(date) {// date = d1
    date = new Date(date);  //为了不影响原日期对象 -> 先创建一个新日期对象
    date.setDate(1);
    var week = date.getDay(); // 0-6
    week = week == 0 ? 7 : week;
    return week;
}


// 2. 在不影响原日期对象的前提下,封装一个函数,传入一个日期对象 => 返回上个月有多少天  (本月的第0天 就是上个月最后一天 => 是几号就有多少天)
function getLastMonthDays(date) { // date = d1
    date = new Date(date);  //  date => 复制后的新日期
    date.setDate(0);
    return date.getDate();
}


function getThisMonthDays(date) { // date = d1

    // 月份切换要注意: 大月(31)向小月切换时( 28 29 30) 可能会有问题 (如果日期时31号 可能会超出小月的临界值 => 自动换算)
    // 假如今天 2022-10-31 
    // 下个月: 2022-11-31 => 2022-12-1
    // 第0天:  2022-12-0  => 2022-11-30  => 30

    // 怎么解决?
    // 方法中切换为下个月之后 -> 将日期设置为0 => 反正都是0,可以提前将日期设置为每个月都有的日期 => 1号
    // 假如今天 2022-10-31 
    // 提前设置1号:  2022-10-1
    // 下个月:       2022-11-1
    // 第0天:  2022-11-0 => 2022-10-31

    date = new Date(date);  //  date => 复制后的新日期
    date.setDate(1);
    date.setMonth(date.getMonth() + 1); // 下个月
    date.setDate(0);  // 第0天
    return date.getDate();
}







